package org.yelongframework.ognl;

import org.yelongframework.lang.Nullable;

/**
 * OGNL支持
 * 
 * @since 1.0.0
 */
public interface Ognlable {

	// ==================================================getValue==================================================

	/**
	 * 获取表达式的值
	 * 
	 * @param expression 表达式
	 * @return 值
	 * @throws OgnlableException OGNL异常
	 */
	@Nullable
	Object getValue(String expression) throws OgnlableException;

	// ==================================================setValue==================================================

	/**
	 * 设置表达式的属性值
	 * 
	 * @param expression 表达式
	 * @param value      值
	 * @throws OgnlableException OGNL异常
	 */
	void setValue(String expression, @Nullable Object value) throws OgnlableException;

	// ==================================================getRoot==================================================

	/**
	 * @return 根数据值
	 */
	Object getRoot();

}
